# -*- coding: utf-8 -*-
'''
@Time    : 2022/8/13 16:08
@Author  : HandsomeWu
@File    : robot.py
@Describe: 扫地机器人
    房间被划分为n*m的方格。定义打扫干净为这n*m的方格全部被遍历了一次
    你为扫地机器人下达了若干指令。每个指令为【上下左右】移动中的一种。机器人会将经过的路径上的方格打扫干净

    现在询问你机器人能否将房间打扫干净，能则输出Yes，不能则输出No。
    对于Yes的情况下，还要求你继续输出到哪个指令结束后，房间就打扫干净了
    对于No的情况下，还要求你输出还有多少个地块没有打扫干净

* input:
    第一行三个正整数n, m, k，以空格分开，表示房间大小n*m，接下来会有长度为k的指令
    第二行长度为k的一个字符串。字符串中仅有下面四种字符（注意：均为大写）
        W：表示下一步机器人将向上移动
        A：表示下一步机器人将向左移动
        S：表示下一步机器人将向下移动
        D：表示下一步机器人将向右移动

* output
    第一行一个字符串Yes或No表示能否打扫干净

    对于Yes的情况，第二行输出一个正整数，表示在第几个指令之后已经打扫干净了。
    注意指令编号从1开始而不是0。
    对于No的情况，第二行输出一个正整数，表示还剩几个地块没有打扫。
'''

# 思路: 就是按照 第二行的指令来走 n*m的方格 最后判断方格有没有被遍历完
#  初始化全零 填数即可 -- 指令会不会超出边界(保证机器人在打扫的过程中不会越过房间边界。换句话说机器人始终保持在n*m的方格图中)

# 问题: 如果可以打扫完 第几个指令之后已经打扫干净了?  -- 难道要每步都check 一下是否全为1？
# pre define
dirc = []

# get input
n,m,k = map(int,input().split(' '))
move_list = list(input())

mapL = [[0]*m]*n
mapL[0][0] = 1

print(move_list)
# 执行动作
x,y = 0,0
final_point = 0

for idx,action in enumerate(move_list):
    if action == 'W':
        x -= 1
    elif action == 'S':
        x +=1
    elif action == 'A':
        y -=1
    elif action == 'D':
        y +=1


    if mapL == [[1]*m]*n:
        final_point = idx + 1
        break

    mapL[x][y] = 1


# 计数

dirtyL = 0

for i in range(n):
    for j in range(m):
        if mapL[i][j] == 0:
            dirtyL +=1

# 打印输出
if dirtyL == 0:
    print('YES',end='\n')
    print(f'{final_point}',end='\n')
else:
    print('NO',end='\n')
    print(f'{dirtyL}',end='\n')